package com.AdvancedDemos.FileAndIO;

import java.io.*;

public class 字符缓冲输入输出流 {
    public static void main(String[] args) throws IOException {
        //字符缓冲输入流
        //底层默认提供长度为8192的字符数组,提高读取效率
        BufferedReader bufferedReader = new BufferedReader(new FileReader("helloworld\\src\\com\\AdvancedDemos\\FileAndIO\\a.txt"));

        /*char[] chars = new char[10];
        int count;
        while ((count = bufferedReader.read(chars)) != -1) {
            System.out.println(new String(chars, 0, count));
        }*/

        //public String readLine() throws IOException 特殊的读取方法,一次读一整行,以分隔符(回车换行),作为读取一行的结束标记
        //没有读到末尾,返回读到的行字符串,读到末尾返回null
        String line;
        while ((line = bufferedReader.readLine()) != null) {//注意:会把换行符舍弃
            System.out.println(line);
            //我的名字叫八格牙路
            //123
            //我的名字叫八格牙路
        }


        bufferedReader.close();

//----------------------------------------------
        //字符缓冲输出流BufferedWriter
        //底层默认提供长度为8192的字符数组,提高写出效率

        //路径表示的文件不存在,会按照平台默认编码规则创建文件
        BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter("helloworld\\src\\com\\AdvancedDemos\\FileAndIO\\b.txt"));

        //写出数据
        bufferedWriter.write("卢本伟NB");
//        bufferedWriter.write("\r\n");
        //特殊方法 newLine() 自动根据操作系统换行符,获取并写出
        bufferedWriter.newLine();

        //特殊方法 flush() 手动冲刷缓冲区数据文件到指定文件
        //缓冲区特点:不满足缓冲区大小数据部分,不会发送,可能会从内存中消失,需要手动冲刷出去
        //达到缓冲区大小的数据,会自动发送
        bufferedWriter.flush();

        //关流
        bufferedWriter.close();//在最后关闭流之前,先自动执行flush(),再关流,释放文件资源
    }
}
